<!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
  <meta name="description" content="刘清政">
  <meta name="keyword" content="hexo-theme">
  
    <link rel="shortcut icon" href="/css/images/logo.png">
  
  <title>
    
      Justin-刘清政的博客
    
  </title>
  <link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  <link href="//cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.css" rel="stylesheet">
  <link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/tomorrow.min.css" rel="stylesheet">
  
<link rel="stylesheet" href="/css/style.css">

  
    
<link rel="stylesheet" href="/css/plugins/gitment.css">

  
  <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/geopattern/1.2.3/js/geopattern.min.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.js"></script>
  
    
<script src="/js/qrious.js"></script>

  
  
    
<script src="/js/gitment.js"></script>

  
  

  
<meta name="generator" content="Hexo 4.2.0"></head>
<div class="wechat-share">
  <img src="/css/images/logo.png" />
</div>

  <body>
    <header class="header fixed-header">
  <div class="header-container">
    <a class="home-link" href="/">
      <div class="logo"></div>
      <span>Justin-刘清政的博客</span>
    </a>
    <ul class="right-list">
      
        <li class="list-item">
          
            <a href="/" class="item-link active">主页</a>
          
        </li>
      
        <li class="list-item">
          
            <a href="/tags/" class="item-link">标签</a>
          
        </li>
      
        <li class="list-item">
          
            <a href="/archives/" class="item-link">归档</a>
          
        </li>
      
        <li class="list-item">
          
            <a href="/about/" class="item-link">关于我</a>
          
        </li>
      
    </ul>
    <div class="menu">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </div>
    <div class="menu-mask">
      <ul class="menu-list">
        
          <li class="menu-item">
            
              <a href="/" class="menu-link mobile-active">主页</a>
            
          </li>
        
          <li class="menu-item">
            
              <a href="/tags/" class="menu-link">标签</a>
            
          </li>
        
          <li class="menu-item">
            
              <a href="/archives/" class="menu-link">归档</a>
            
          </li>
        
          <li class="menu-item">
            
              <a href="/about/" class="menu-link">关于我</a>
            
          </li>
        
      </ul>
    </div>
  </div>
</header>

    <main class="app-body">
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/6-%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE/01-%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE%E4%B9%8B-%E6%97%A5%E5%BF%97%E6%94%B6%E9%9B%86%E7%9B%91%E6%8E%A7%E7%A8%8B%E5%BA%8F/">实战项目之-日志手机监控程序</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          
        
      </div>
      <a class="more" href="/go/6-%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE/01-%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE%E4%B9%8B-%E6%97%A5%E5%BF%97%E6%94%B6%E9%9B%86%E7%9B%91%E6%8E%A7%E7%A8%8B%E5%BA%8F/">详情...</a>
    </article>
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/22-%E4%BF%A1%E9%81%93%EF%BC%88channel%EF%BC%89/">22-信道（channel）</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          什么是信道？信道可以想像成 Go 协程之间通信的管道。如同管道中的水会从一端流到另一端，通过使用信道，数据也可以从一端发送，在另一端接收。  
信道的声明所有信道都关联了一个类型。信道只能运输这种类型的数据，而运输其他类型的数据都是非法的。  
chan T 表示 T 类型的信道。  
信道 ...
        
      </div>
      <a class="more" href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/22-%E4%BF%A1%E9%81%93%EF%BC%88channel%EF%BC%89/">详情...</a>
    </article>
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/1-%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/02-%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/">02-开发环境搭建</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          一 下载地址安装包下载地址为：https://golang.org/dl/。
如果打不开可以使用这个地址：https://golang.google.cn/dl/。
各个系统对应的包名：



操作系统
包名



Windows
go1.13.3.windows-amd64.msi


L ...
        
      </div>
      <a class="more" href="/go/1-%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/02-%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/">详情...</a>
    </article>
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/4-Go%E8%AF%AD%E8%A8%80%E6%A1%86%E6%9E%B6/01-Web%E6%A1%86%E6%9E%B6%E4%B9%8BGin/">Web框架之Gin</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter，速度提高了近40倍。 如果你是性能和高效的追求者, 你会爱上Gin。

Gin框架介绍Go世界里最流行的Web框架，Github上有24K+star。
基于htt ...
        
      </div>
      <a class="more" href="/go/4-Go%E8%AF%AD%E8%A8%80%E6%A1%86%E6%9E%B6/01-Web%E6%A1%86%E6%9E%B6%E4%B9%8BGin/">详情...</a>
    </article>
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/5-Go%E8%AF%AD%E8%A8%80%E8%BF%9B%E9%98%B6/07-Go%E8%AF%AD%E8%A8%80%E4%B9%8BCeph%EF%BC%88%E5%88%86%E5%B8%83%E5%BC%8F%E5%AD%98%E5%82%A8%EF%BC%89/">Go语言之Ceph(分布式存储)</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          
        
      </div>
      <a class="more" href="/go/5-Go%E8%AF%AD%E8%A8%80%E8%BF%9B%E9%98%B6/07-Go%E8%AF%AD%E8%A8%80%E4%B9%8BCeph%EF%BC%88%E5%88%86%E5%B8%83%E5%BC%8F%E5%AD%98%E5%82%A8%EF%BC%89/">详情...</a>
    </article>
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/23-%E7%BC%93%E5%86%B2%E4%BF%A1%E9%81%93%E5%92%8C%E5%B7%A5%E4%BD%9C%E6%B1%A0/">23. 缓冲信道和工作池（Buffered Channels and Worker Pools）</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          什么是缓冲信道？在[上一教程]里，我们讨论的主要是无缓冲信道。我们在[信道]的教程里详细讨论了，无缓冲信道的发送和接收过程是阻塞的。  
我们还可以创建一个有缓冲（Buffer）的信道。只在缓冲已满的情况，才会阻塞向缓冲信道（Buffered Channel）发送数据。同样，只有在缓冲为空的 ...
        
      </div>
      <a class="more" href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/23-%E7%BC%93%E5%86%B2%E4%BF%A1%E9%81%93%E5%92%8C%E5%B7%A5%E4%BD%9C%E6%B1%A0/">详情...</a>
    </article>
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/26-%E7%BB%93%E6%9E%84%E4%BD%93%E5%8F%96%E4%BB%A3%E7%B1%BB/">26-结构体取代类</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          Go 支持面向对象吗？Go 并不是完全面向对象的编程语言。Go 官网回答了 Go 是否是面向对象语言，摘录如下。

可以说是，也可以说不是。虽然 Go 有类型和方法，支持面向对象的编程风格，但却没有类型的层次结构。Go  中的“接口”概念提供了一种不同的方法，我们认为它易于使用，也更为普遍。 ...
        
      </div>
      <a class="more" href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/26-%E7%BB%93%E6%9E%84%E4%BD%93%E5%8F%96%E4%BB%A3%E7%B1%BB/">详情...</a>
    </article>
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/25-Mutex/">25-Mutex</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          临界区在学习 Mutex 之前，我们需要理解并发编程中临界区（Critical Section）的概念。当程序并发地运行时，多个 [Go 协程]不应该同时访问那些修改共享资源的代码。这些修改共享资源的代码称为临界区。例如，假设我们有一段代码，将一个变量 x 自增 1。  
1x = x +  ...
        
      </div>
      <a class="more" href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/25-Mutex/">详情...</a>
    </article>
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/3-Go%E8%AF%AD%E8%A8%80%E5%B8%B8%E7%94%A8%E6%A0%87%E5%87%86%E5%BA%93/01-Go%E8%AF%AD%E8%A8%80%E4%B9%8Bcontext/">Go语言之context</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          在 Go http包的Server中，每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务，比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据，比如终端用户的身份认证信息、验证 ...
        
      </div>
      <a class="more" href="/go/3-Go%E8%AF%AD%E8%A8%80%E5%B8%B8%E7%94%A8%E6%A0%87%E5%87%86%E5%BA%93/01-Go%E8%AF%AD%E8%A8%80%E4%B9%8Bcontext/">详情...</a>
    </article>
  
    <article class="article-card">
      <h2 class="article-head">
        <a href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/21-Go%E5%8D%8F%E7%A8%8B/">21-Go 协程</a>
      </h2>
      <p class="article-date">2019年3月10日</p>
      
        
  <a href="/tags#Go" >
    <span class="tag-code">Go</span>
  </a>

      
      <div class="article-summary">
        
          Go 协程是什么？Go 协程是与其他函数或方法一起并发运行的函数或方法。Go 协程可以看作是轻量级线程。与线程相比，创建一个 Go 协程的成本很小。因此在 Go 应用中，常常会看到有数以千计的 Go 协程并发地运行。  
Go 协程相比于线程的优势
相比线程而言，Go 协程的成本极低。堆栈大 ...
        
      </div>
      <a class="more" href="/go/2-Go%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/21-Go%E5%8D%8F%E7%A8%8B/">详情...</a>
    </article>
  

  
    <div class="guide-pager">
  
    <a href="/page/38/"><span class="page-arrow">← </span>Prev</a>
  
  
    <a href="/page/40/">Next<span class="page-arrow"> →</span></a>
  
</div>
  
</main>


    <div class="scroll-top">
  <span class="arrow-icon"></span>
</div>
    <footer class="app-footer">
<!-- 不蒜子统计 -->
<span id="busuanzi_container_site_pv">
     本站总访问量<span id="busuanzi_value_site_pv"></span>次
</span>
<span class="post-meta-divider">|</span>
<span id="busuanzi_container_site_uv" style='display:none'>
     本站访客数<span id="busuanzi_value_site_uv"></span>人
</span>
<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>



  <p class="copyright">
    &copy; 2021 | Proudly powered by <a href="https://www.cnblogs.com/xiaoyuanqujing" target="_blank">小猿取经</a>
    <br>
    Theme by <a href="https://www.cnblogs.com/xiaoyuanqujing" target="_blank" rel="noopener">小猿取经</a>
  </p>
</footer>

<script>
  function async(u, c) {
    var d = document, t = 'script',
      o = d.createElement(t),
      s = d.getElementsByTagName(t)[0];
    o.src = u;
    if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); }
    s.parentNode.insertBefore(o, s);
  }
</script>
<script>
  async("//cdnjs.cloudflare.com/ajax/libs/fastclick/1.0.6/fastclick.min.js", function(){
    FastClick.attach(document.body);
  })
</script>

<script>
  var hasLine = 'true';
  async("//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js", function(){
    $('figure pre').each(function(i, block) {
      var figure = $(this).parents('figure');
      if (hasLine === 'false') {
        figure.find('.gutter').hide();
      }
      var lang = figure.attr('class').split(' ')[1] || 'code';
      var codeHtml = $(this).html();
      var codeTag = document.createElement('code');
      codeTag.className = lang;
      codeTag.innerHTML = codeHtml;
      $(this).attr('class', '').empty().html(codeTag);
      figure.attr('data-lang', lang.toUpperCase());
      hljs.highlightBlock(block);
    });
  })
</script>





<!-- Baidu Tongji -->

<script>
    var _baId = 'c5fd96eee1193585be191f318c3fa725';
    // Originial
    var _hmt = _hmt || [];
    (function() {
      var hm = document.createElement("script");
      hm.src = "//hm.baidu.com/hm.js?" + _baId;
      var s = document.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(hm, s);
    })();
</script>


<script src="/js/script.js"></script>


<script src="/js/search.js"></script>


<script src="/js/load.js"></script>



  <span class="local-search local-search-google local-search-plugin" style="right: 50px;top: 70px;;position:absolute;z-index:2;">
      <input type="search" placeholder="站内搜索" id="local-search-input" class="local-search-input-cls" style="">
      <div id="local-search-result" class="local-search-result-cls"></div>
  </span>


  </body>
</html>